package de.fhwf.mixedreality.client;

import java.awt.Color;

import javax.swing.JPanel;

public interface IView {
	/**Draws a ArcCircle around the Bot*/
	public void drawArcCircleAroundBot(Vector vectorBot, Vector vectorTarget, int angle);
	
	/** Draws a Circle around the Bot*/
	public void drawCircleAroundBot(Vector vectorBot, int radius);
	
	/** Draws a white arrow representing the Vector in white with shadow */
	public abstract void drawVectorFromVector(Vector fromVector, Vector toVector);

	/**
	 * Draws a white arrow representing the Vector in white with shadow and
	 * augments it with a caption
	 */
	public abstract void drawVectorFromVector(Vector fromVector, Vector toVector, String label);

	/**
	 * Draws a white arrow representing the Vector in white with shadow and
	 * augments it with a caption
	 */
	public abstract void drawVectorFromVector(Vector fromVector, Vector toVector, String label, Color color);

	/** Draws a white arrow representing the Vector in white with shadow */
	public abstract void drawVectorFromMe(Vector toVector);

	/**
	 * Draws a white arrow representing the Vector in white with shadow and
	 * augments it with a caption
	 */
	public abstract void drawVectorFromMe(Vector toVector, String label);

	/**
	 * Draws a white arrow representing the Vector in white with shadow and
	 * augments it with a caption
	 */
	public abstract void drawVectorFromMe(Vector toVector, String label, Color color);

	// Draws some text at the given coordinates
	public abstract void drawText(int x, int y, String text);

	/**
	 * Draws some text at the given coordinates
	 * 
	 * @param x X-Position
	 * @param y Y-Position
	 * @param text
	 * @param color
	 */
	public abstract void drawText(int x, int y, String text, Color color);
	
	
	public abstract void addOverlay(JPanel overlay, int x, int y, int width, int height);
	public abstract void addOverlay(JPanel overlay, int x, int y, int width, int height, float opacity);

	/**
	 * Draws the Client world
	 * @param client
	 */
	public abstract void drawClientWorld(IClient client);

	/**
	 * Updates the Client world with new Data.
	 * @param client
	 */
	public abstract void update(IClient client);

}
